<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class AdminUser extends Model
{
    use SoftDeletes;

    /**
     * 与模型关联的表名
     *
     * @var string
     */
    protected $table = 'ims_yz_admin_users';

    /**
     * 主键
     *
     * @var string
     */
    protected $primaryKey = 'uid';

    /**
     * 指示模型是否主动维护时间戳
     *
     * @var bool
     */
    public $timestamps = true;

    /**
     * 模型日期列的存储格式
     *
     * @var string
     */
    protected $dateFormat = 'U';

    /**
     * 时间戳字段名称
     */
    const CREATED_AT = 'created_at';
    const UPDATED_AT = 'updated_at';
    const DELETED_AT = 'deleted_at';

    /**
     * 可批量赋值的属性
     *
     * @var array
     */
    protected $fillable = [
        'username',
        'password',
        'status',
        'type',
        'remark',
        'application_number',
        'endtime',
        'owner_uid',
        'salt',
        'joinip',
        'lastvisit',
        'lastip',
        'remember_token',
        'change_password_at',
        'change_remind',
        'login_token',
    ];

    /**
     * 隐藏的属性
     *
     * @var array
     */
    protected $hidden = [
        'password',
        'salt',
        'remember_token',
        'login_token',
    ];

    /**
     * 属性类型转换
     *
     * @var array
     */
    protected $casts = [
        'status' => 'integer',
        'type' => 'integer',
        'application_number' => 'integer',
        'endtime' => 'integer',
        'owner_uid' => 'integer',
        'lastvisit' => 'integer',
        'created_at' => 'integer',
        'updated_at' => 'integer',
        'deleted_at' => 'integer',
        'change_password_at' => 'integer',
        'change_remind' => 'integer',
    ];

    /**
     * 获取用户状态文本
     *
     * @return string
     */
    public function getStatusTextAttribute()
    {
        $statusMap = [
            0 => '超级管理员',
            1 => '审核中',
            2 => '有效',
            3 => '禁用',
        ];

        return $statusMap[$this->status] ?? '未知状态';
    }

    /**
     * 获取用户类型文本
     *
     * @return string
     */
    public function getTypeTextAttribute()
    {
        $typeMap = [
            0 => '超级管理员',
            1 => '普通用户',
            3 => '店员',
        ];

        return $typeMap[$this->type] ?? '未知类型';
    }
}